package com.maven.blog.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;

import java.util.UUID;


@Slf4j
public class SecretUtils {
    // 加密操作
    public static String encipher(String password ) {


        // 生成随机盐值
        String salt = UUID.randomUUID().toString().replaceAll("-", "");
//        log.info("salt:" + salt);

        // secretPassword ：盐值+ 密码 -> md5 加密得到的
        String secretPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
//        log.info("secretPassword:" + secretPassword);

        // 数据库中 存储的是  盐值 + 密文（ 盐值 + 明文 ——> md5 进行加密）
        return salt + secretPassword;


    }

    // 解密操作
    public static boolean decipher(String password,String sqlPassword) {
        // 从数据库 中存储的 内容 取盐值，
        if (sqlPassword==null || sqlPassword.length()!=64){
            log.error("数据库中的密码格式不对");
            return false;
        }

        String salt = sqlPassword.substring(0, 32);
//        log.info("salt:" + salt);

        // 盐值 + 明文 -> md5 加密
        String secretPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
//        log.info("secretPassword:" + secretPassword);

        return (salt + secretPassword).equals(sqlPassword);
    }
}
